-- 2022-8-9

---[[ 反向表

    -- 正如此前提到的 我们很少在Lua语言中进行搜索操作 相反 我们使用被称为索引表(index table)或反向表(reverse table)的数据结构
    -- 假设有一个存放了一周每一天名称的表
    local days = {"Sundays","Mondays","Tuesday","Wednesday","Thursday","Friday","Saturday"}
    -- 如果想要将一周每一天的名称转换为其在一周里的位置 那么可以通过搜索这个表来寻找指定的名称
    -- 不过一种更高效的方式是构造一个反向表 假定为revDays 该表中的索引为一周每一天的名称而值为其在一周里的位置
    -- 这个表 形如:
    local revDays = {Sundays = 1,Mondays = 2,Tuesday = 3,Wednesday = 4,Thursday = 5,Friday = 6,Saturday = 7}
    -- 然后只需要直接在反向表中根据名称进行索引就可以了
    local x = "Tuesday"
    print(revDays[x])
    -- 当然 这个反向表不用手工声明 可以从原始表中自动的构造出反向表
    local revDays2 = {}
    for k, v in pairs(days) do
        revDays2[v] = k
    end
    -- 上例中的循环会对每个元素days进行赋值 变量k获取到的是键(1,2,...)而变量v获取到的是值("Sunday","Monday",...)
--]]